package algo3c3g3.view;

import algo3c3g3.model.*;
import algo3c3g3.controller.*;

/**
 * Establece las operaciones necesarias para mostrar los elementos del juego
 * en forma grafica.
 */
public interface View
{
    /**
     * Registra el controlador que maneja el modelo de datos asociado
     * a esta vista.
     */
    void registerController(Controller controller);
    
    /**
     * Devuelve la referencia al modelo de datos asociado.
     */
    Level getLevel();
    
    /**
     * Indica a la vista cual es el modelo de datos que va a representar.
     */
    void setLevel(Level level);
    
    /**
     * Crea todos los elementos de la vista del juego.
     */
    void initScreen();
    
    /**
     * Elimina todos los elementos de la vista del juego.
     */
    void resetScreen();
    
    /**
     * Actualiza el tiempo del juego.
     */
    void updateTime();
    
    /**
     * Muestra un mensage de error.
     */
    void showErrorMessage(String msg);
    
    /**
     * Muestra un mensaje informativo.
     */
    void showInfoMsessage(String msg, String title);
}
